﻿using Shop.Core.Share;
using Shop.Model.Dto.User;
using Shop.Model.View.Use;

namespace Shop.IServices
{
    public interface IUserAppService : IAppService
    {
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <returns></returns>
        Task<UserInforVo> GetUserBaseInfor();

        /// <summary>
        /// 添加用户的上级
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> AddSuperior(int input);

        /// <summary>
        /// 修改交易密码
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> ChangeTradePassword(string input);

        /// <summary>
        /// 修改登录密码
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> ChangePassword(string input);

        /// <summary>
        /// 验证交易密码是否设置
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> VerifyTradePassworde();

        /// <summary>
        /// 发送修改的验证码
        /// </summary>
        /// <returns></returns>
        Task<AppResult> SendChangeCode();

        /// <summary>
        /// 检查验证码
        /// </summary>
        /// <returns></returns>
        Task<bool> CheckChangeCode(string input);

        /// <summary>
        /// 更改手机号码
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> ChangeTelephone(string input);

        /// <summary>
        /// 账号注销
        /// </summary>
        /// <returns></returns>
        Task<bool> AccountCancellation();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<AppResult> UpdateUserInforByWeChat(UserWechatDto input);

        /// <summary>
        /// 更新用户名称
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> UpdateUserName(string input);

        /// <summary>
        /// 更新用户名称
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> UpdateUserHead(string input);

        /// <summary>
        /// 添加合同
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<AppResult> Contract(AddContractDto input);
    }
}
